package czolgisci.map;

import czolgisci.tiles.TileType;

/**
 * Mapa gry. Składa się z kafelków (tiles - pola tablicy) do których możemy
 * odwoływać się za pomocą współrzędnych I i J. Kafelki są przetrzymywane w
 * tablicy i pozwalają na przyspieszenie wykrywania kolizji. <br/> Współrzędne X
 * i Y oznaczją położenie obiektu z dokładnością do jednego pixela
 * 
 * @author pillow
 * @pattern Adapter - Klasa Map używa klasy MapCodeInterpreter do rozpoznawania
 *          obiektów na mapie dzięki czemu jest niezależna od konkretnej
 *          implementacji kafelków
 * 
 */
public class Map
{
	int width;
	int height;
	char map[][];
	
	/**
	 * Konstruktor klasy
	 * 
	 * @param width
	 *            szerokość mapy (ilość pól)
	 * @param height
	 *            wysokość mapy (ilość pól)
	 * @param mapArr
	 *            dwuwymiarowa tablica reprezentująca mapę
	 */
	public Map(int mapWidth, int mapHeight, char mapArr[][])
	{
		width = mapWidth;
		height = mapHeight;
		map = mapArr;
	}

	/**
	 * Ustawia obiekt typu type w kafelku o współrzędnych IJ
	 * 
	 * @param i
	 *            współrzędna I
	 * @param j
	 *            współrzędna J
	 * @param type
	 *            typ obiektu do ustawienia w kafelku
	 */
	public void setTile(int i, int j, TileType type)
	{
		map[i][j] = MapCodeInterpreter.encodeTile(type);
	}

	/**
	 * Pobiera typ obiektu umieszonego w kafelku
	 * 
	 * @param i
	 *            współrzędna I
	 * @param j
	 *            współrzędna J
	 * @return typ obiektu w kafelku
	 */
	public TileType getTile(int i, int j)
	{
		return MapCodeInterpreter.decodeTileType(map[i][j]);
	}

	/**
	 * Ładuje mapę z pliku
	 * 
	 * @param filePath
	 */
	public static void loadFromFile(String filePath)
	{

	}

}
